[INFO] fetching crate ccny-course-catalog 0.1.4...
[INFO] checking ccny-course-catalog-0.1.4 against master#82310651b93a594a3fd69015e1562186a080d94c for pr-145770
[INFO] extracting crate ccny-course-catalog 0.1.4 into /workspace/builds/worker-7-tc1/source
[INFO] started tweaking crates.io crate ccny-course-catalog 0.1.4
[INFO] finished tweaking crates.io crate ccny-course-catalog 0.1.4
[INFO] tweaked toml for crates.io crate ccny-course-catalog 0.1.4 written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate ccny-course-catalog 0.1.4 on toolchain 82310651b93a594a3fd69015e1562186a080d94c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+82310651b93a594a3fd69015e1562186a080d94c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate ccny-course-catalog 0.1.4 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+82310651b93a594a3fd69015e1562186a080d94c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded filepath v0.2.0
[INFO] [stderr]   Downloaded closestmatch v0.1.2
[INFO] [stderr]   Downloaded async-compression v0.4.18
[INFO] [stderr]   Downloaded cc v1.2.9
[INFO] [stderr]   Downloaded rayon v0.7.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+82310651b93a594a3fd69015e1562186a080d94c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] aab7a3e171784c060b394ebee5f507ce5da31e4348051a6663deecd0ade2822e
[INFO] running `Command { std: "docker" "start" "-a" "aab7a3e171784c060b394ebee5f507ce5da31e4348051a6663deecd0ade2822e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "aab7a3e171784c060b394ebee5f507ce5da31e4348051a6663deecd0ade2822e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "aab7a3e171784c060b394ebee5f507ce5da31e4348051a6663deecd0ade2822e", kill_on_drop: false }`
[INFO] [stdout] aab7a3e171784c060b394ebee5f507ce5da31e4348051a6663deecd0ade2822e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+82310651b93a594a3fd69015e1562186a080d94c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 39a3adaf5e6ab91f93feb922c884fcc92e0ed2973f9b972012a541bf0cd74467
[INFO] running `Command { std: "docker" "start" "-a" "39a3adaf5e6ab91f93feb922c884fcc92e0ed2973f9b972012a541bf0cd74467", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.93
[INFO] [stderr]    Compiling unicode-ident v1.0.14
[INFO] [stderr]    Compiling autocfg v1.4.0
[INFO] [stderr]    Compiling libc v0.2.169
[INFO] [stderr]     Checking cfg-if v1.0.0
[INFO] [stderr]     Checking smallvec v1.13.2
[INFO] [stderr]     Checking pin-project-lite v0.2.16
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]     Checking stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]     Checking bytes v1.9.0
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]     Checking memchr v2.7.4
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]     Checking once_cell v1.20.2
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]     Checking itoa v1.0.14
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling pkg-config v0.3.31
[INFO] [stderr]    Compiling cc v1.2.9
[INFO] [stderr]     Checking pin-utils v0.1.0
[INFO] [stderr]     Checking futures-task v0.3.31
[INFO] [stderr]     Checking litemap v0.7.4
[INFO] [stderr]     Checking writeable v0.5.5
[INFO] [stderr]     Checking foldhash v0.1.4
[INFO] [stderr]     Checking equivalent v1.0.1
[INFO] [stderr]     Checking allocator-api2 v0.2.21
[INFO] [stderr]     Checking fnv v1.0.7
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]     Checking icu_locid_transform_data v1.5.0
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]     Checking tracing-core v0.1.33
[INFO] [stderr]    Compiling httparse v1.9.5
[INFO] [stderr]    Compiling openssl v0.10.68
[INFO] [stderr]     Checking foreign-types-shared v0.1.1
[INFO] [stderr]     Checking icu_properties_data v1.5.0
[INFO] [stderr]    Compiling native-tls v0.2.12
[INFO] [stderr]     Checking http v1.2.0
[INFO] [stderr]     Checking foreign-types v0.3.2
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]    Compiling slab v0.4.9
[INFO] [stderr]     Checking write16 v1.0.0
[INFO] [stderr]     Checking bitflags v2.8.0
[INFO] [stderr]     Checking utf8_iter v1.0.4
[INFO] [stderr]    Compiling serde v1.0.217
[INFO] [stderr]     Checking try-lock v0.2.5
[INFO] [stderr]     Checking utf16_iter v1.0.5
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking icu_normalizer_data v1.5.0
[INFO] [stderr]     Checking atomic-waker v1.1.2
[INFO] [stderr]     Checking want v0.3.1
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking tower-service v0.3.3
[INFO] [stderr]    Compiling rayon-core v1.12.1
[INFO] [stderr]     Checking hashbrown v0.15.2
[INFO] [stderr]     Checking percent-encoding v2.3.1
[INFO] [stderr]     Checking log v0.4.25
[INFO] [stderr]     Checking adler2 v2.0.0
[INFO] [stderr]     Checking openssl-probe v0.1.5
[INFO] [stderr]     Checking crc32fast v1.4.2
[INFO] [stderr]     Checking ryu v1.0.18
[INFO] [stderr]    Compiling serde_json v1.0.135
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]     Checking tower-layer v0.3.3
[INFO] [stderr]     Checking miniz_oxide v0.8.3
[INFO] [stderr]     Checking form_urlencoded v1.2.1
[INFO] [stderr]     Checking rustls-pki-types v1.10.1
[INFO] [stderr]    Compiling anyhow v1.0.95
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]     Checking mime v0.3.17
[INFO] [stderr]     Checking ipnet v2.10.1
[INFO] [stderr]     Checking base64 v0.22.1
[INFO] [stderr]     Checking filepath v0.2.0
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]     Checking signal-hook-registry v1.4.2
[INFO] [stderr]     Checking mio v1.0.3
[INFO] [stderr]     Checking socket2 v0.5.8
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]    Compiling quote v1.0.38
[INFO] [stderr]     Checking indexmap v2.7.0
[INFO] [stderr]     Checking lru v0.13.0
[INFO] [stderr]     Checking rayon v0.7.1
[INFO] [stderr]     Checking rustls-pemfile v2.2.0
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]    Compiling syn v2.0.96
[INFO] [stderr]     Checking flate2 v1.0.35
[INFO] [stderr]    Compiling openssl-sys v0.9.104
[INFO] [stderr]     Checking closestmatch v0.1.2
[INFO] [stderr]    Compiling synstructure v0.13.1
[INFO] [stderr]    Compiling zerofrom-derive v0.1.5
[INFO] [stderr]    Compiling yoke-derive v0.7.5
[INFO] [stderr]    Compiling zerovec-derive v0.10.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling icu_provider_macros v1.5.0
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling serde_derive v1.0.217
[INFO] [stderr]     Checking tokio v1.43.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking zerofrom v0.1.5
[INFO] [stderr]     Checking yoke v0.7.5
[INFO] [stderr]     Checking zerovec v0.10.4
[INFO] [stderr]     Checking tinystr v0.7.6
[INFO] [stderr]     Checking icu_collections v1.5.0
[INFO] [stderr]     Checking icu_locid v1.5.0
[INFO] [stderr]     Checking icu_provider v1.5.0
[INFO] [stderr]     Checking http-body-util v0.1.2
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking icu_locid_transform v1.5.0
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking icu_properties v1.5.1
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking tokio-util v0.7.13
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking async-compression v0.4.18
[INFO] [stderr]     Checking h2 v0.4.7
[INFO] [stderr]     Checking icu_normalizer v1.5.0
[INFO] [stderr]     Checking idna_adapter v1.2.0
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking hyper v1.5.2
[INFO] [stderr]     Checking hyper-util v0.1.10
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking reqwest v0.12.12
[INFO] [stderr]     Checking ccny-course-catalog v0.1.4 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/data_structures/custom_lru_cache.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::mem;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ACCEPT`, `CONTENT_TYPE`, `HeaderMap`, `HeaderValue`, `ORIGIN`, and `REFERER`
[INFO] [stdout]  --> src/api/course_finder.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 | use reqwest::header::{HeaderMap, HeaderValue, ACCEPT, CONTENT_TYPE, ORIGIN, REFERER};
[INFO] [stdout]   |                       ^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^  ^^^^^^^^^^^^  ^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> src/api/course_finder.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `fs` and `io::Write`
[INFO] [stdout]  --> src/api/course_finder.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::{fs, io::Write};
[INFO] [stdout]   |           ^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]  --> src/api/course_finder.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::borrow::Borrow`
[INFO] [stdout]   --> src/api/course_finder.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::borrow::Borrow;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]   --> src/api/course_finder.rs:12:13
[INFO] [stdout]    |
[INFO] [stdout] 12 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ptr::null`
[INFO] [stdout]   --> src/api/course_finder.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::ptr::null;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::api::course_finder`
[INFO] [stdout]  --> src/api/utils.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::api::course_finder;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io::Write`
[INFO] [stdout]  --> src/api/utils.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::{fs, io::Write};
[INFO] [stdout]   |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CourseComponents` and `CourseInfo`
[INFO] [stdout]   --> src/lib.rs:18:22
[INFO] [stdout]    |
[INFO] [stdout] 18 | use models::course::{CourseComponents, CourseInfo};
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/data_structures/custom_lru_cache.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::mem;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ACCEPT`, `CONTENT_TYPE`, `HeaderMap`, `HeaderValue`, `ORIGIN`, and `REFERER`
[INFO] [stdout]  --> src/api/course_finder.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 | use reqwest::header::{HeaderMap, HeaderValue, ACCEPT, CONTENT_TYPE, ORIGIN, REFERER};
[INFO] [stdout]   |                       ^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^  ^^^^^^^^^^^^  ^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> src/api/course_finder.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `fs` and `io::Write`
[INFO] [stdout]  --> src/api/course_finder.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::{fs, io::Write};
[INFO] [stdout]   |           ^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]  --> src/api/course_finder.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::borrow::Borrow`
[INFO] [stdout]   --> src/api/course_finder.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::borrow::Borrow;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]   --> src/api/course_finder.rs:12:13
[INFO] [stdout]    |
[INFO] [stdout] 12 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ptr::null`
[INFO] [stdout]   --> src/api/course_finder.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::ptr::null;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::api::course_finder`
[INFO] [stdout]  --> src/api/utils.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::api::course_finder;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io::Write`
[INFO] [stdout]  --> src/api/utils.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::{fs, io::Write};
[INFO] [stdout]   |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CourseComponents` and `CourseInfo`
[INFO] [stdout]   --> src/lib.rs:18:22
[INFO] [stdout]    |
[INFO] [stdout] 18 | use models::course::{CourseComponents, CourseInfo};
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `effective_end_date_placeholder`
[INFO] [stdout]   --> src/api/department.rs:72:17
[INFO] [stdout]    |
[INFO] [stdout] 72 | ...   let effective_end_date_placeholder = serde_json::from_value(course_data["effectiveEndDate"].clone()).unwrap_or("null".to_owned());
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_effective_end_date_placeholder`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/api/department.rs:53:25
[INFO] [stdout]    |
[INFO] [stdout] 53 |                     let mut course_component_instance = CourseComponents {
[INFO] [stdout]    |                         ----^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/api/department.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |             let mut course_info_instance = CourseInfo {
[INFO] [stdout]    |                 ----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `json_string`
[INFO] [stdout]   --> src/api/course_finder.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let json_string : serde_json::Value = serde_json::from_str(&body)?;
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_json_string`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `effective_end_date_placeholder`
[INFO] [stdout]   --> src/api/department.rs:72:17
[INFO] [stdout]    |
[INFO] [stdout] 72 | ...   let effective_end_date_placeholder = serde_json::from_value(course_data["effectiveEndDate"].clone()).unwrap_or("null".to_owned());
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_effective_end_date_placeholder`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `closest_course_groupID`
[INFO] [stdout]   --> src/api/course_finder.rs:66:13
[INFO] [stdout]    |
[INFO] [stdout] 66 |     let mut closest_course_groupID = String::new();        // result will be stored here
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_closest_course_groupID`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/api/course_finder.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |     let mut closest_course_groupID = String::new();        // result will be stored here
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/api/course_finder.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 73 |     let mut courses_by_department = fetch_courses_by_department(&closest_department).await.unwrap();
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `course_name_and_code_mapping`
[INFO] [stdout]    --> src/api/course_finder.rs:110:9
[INFO] [stdout]     |
[INFO] [stdout] 110 |     let course_name_and_code_mapping : BTreeMap<String, (i32, String)> = BTreeMap::new();     // this is where the mapping logic will be ...
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_course_name_and_code_mapping`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `complete_course_group_id` is never read
[INFO] [stdout]    --> src/api/course_finder.rs:112:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |     let mut complete_course_group_id : String = String::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/api/department.rs:53:25
[INFO] [stdout]    |
[INFO] [stdout] 53 |                     let mut course_component_instance = CourseComponents {
[INFO] [stdout]    |                         ----^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/api/department.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |             let mut course_info_instance = CourseInfo {
[INFO] [stdout]    |                 ----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `department_courses`
[INFO] [stdout]   --> src/api/utils.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     let department_courses : Vec<CourseInfo> = fetch_courses_by_department(department_name).await?;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_department_courses`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `json_string`
[INFO] [stdout]   --> src/api/course_finder.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let json_string : serde_json::Value = serde_json::from_str(&body)?;
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_json_string`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `closest_course_groupID`
[INFO] [stdout]   --> src/api/course_finder.rs:66:13
[INFO] [stdout]    |
[INFO] [stdout] 66 |     let mut closest_course_groupID = String::new();        // result will be stored here
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_closest_course_groupID`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/api/course_finder.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |     let mut closest_course_groupID = String::new();        // result will be stored here
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/api/course_finder.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 73 |     let mut courses_by_department = fetch_courses_by_department(&closest_department).await.unwrap();
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `course_name_and_code_mapping`
[INFO] [stdout]    --> src/api/course_finder.rs:110:9
[INFO] [stdout]     |
[INFO] [stdout] 110 |     let course_name_and_code_mapping : BTreeMap<String, (i32, String)> = BTreeMap::new();     // this is where the mapping logic will be ...
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_course_name_and_code_mapping`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `complete_course_group_id` is never read
[INFO] [stdout]    --> src/api/course_finder.rs:112:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |     let mut complete_course_group_id : String = String::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `department_courses`
[INFO] [stdout]   --> src/api/utils.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     let department_courses : Vec<CourseInfo> = fetch_courses_by_department(department_name).await?;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_department_courses`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `result_string` is never read
[INFO] [stdout]    --> src/api/department.rs:122:13
[INFO] [stdout]     |
[INFO] [stdout] 122 |     let mut result_string : String = String::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/api/department.rs:313:14
[INFO] [stdout]     |
[INFO] [stdout] 313 |     for (key,value) in department_mapping.into_iter() {
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `result_string` is never read
[INFO] [stdout]   --> src/api/course_finder.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |     let mut result_string : String = String::new();
[INFO] [stdout]    |             ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> src/api/utils.rs:35:14
[INFO] [stdout]    |
[INFO] [stdout] 35 |     for (key,value) in hashmap_input.into_iter() {
[INFO] [stdout]    |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `result_string` is never read
[INFO] [stdout]    --> src/api/department.rs:122:13
[INFO] [stdout]     |
[INFO] [stdout] 122 |     let mut result_string : String = String::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_MAX_SIZE` is never used
[INFO] [stdout]  --> src/data_structures/custom_hashmap.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const DEFAULT_MAX_SIZE : u64 = 256;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CustomHashMap` is never constructed
[INFO] [stdout]   --> src/data_structures/custom_hashmap.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct CustomHashMap<T,V> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeyValue` is never constructed
[INFO] [stdout]   --> src/data_structures/custom_hashmap.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct KeyValue<T,V> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/data_structures/custom_hashmap.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl<T,V> KeyValue<T,V> {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn new(key : T, value : V) -> KeyValue<T,V> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/data_structures/custom_hashmap.rs:58:11
[INFO] [stdout]     |
[INFO] [stdout] 57  | impl<T : Clone + Hash + PartialEq, V : Copy> CustomHashMap<T,V> {
[INFO] [stdout]     | --------------------------------------------------------------- associated items in this implementation
[INFO] [stdout] 58  |     const INIT : Option<KeyValue<T,V>> = None;      // we use const to avoid running into borrow/ownership related errors that may arise
[INFO] [stdout]     |           ^^^^
[INFO] [stdout] 59  |
[INFO] [stdout] 60  |     pub fn new() -> CustomHashMap<T,V> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 68  |     pub fn insert(&mut self, key : T, val : V) -> Option<V> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97  |     fn insert_new_value(&mut self, key : T, val : V, position : usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn update_or_link_new_val(&mut self, key : T, val : V, position : usize) -> Option<V> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn get(&self, key : T) -> Option<V> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn check_list_for_key(&self, key : T, position : usize) -> Option<V> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn remove(&mut self, key : T) -> Option<V> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn check_item_in_list_and_remove(&mut self, key : T, position : usize) -> Option<V> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 308 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 312 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_key` is never used
[INFO] [stdout]    --> src/data_structures/custom_hashmap.rs:322:4
[INFO] [stdout]     |
[INFO] [stdout] 322 | fn hash_key<T : Hash>(key : T) -> u64 {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Node` is never constructed
[INFO] [stdout]   --> src/data_structures/custom_lru_cache.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Node<K,V> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CustomLruCache` is never constructed
[INFO] [stdout]   --> src/data_structures/custom_lru_cache.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct CustomLruCache<K, V> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/data_structures/custom_lru_cache.rs:52:12
[INFO] [stdout]     |
[INFO] [stdout] 49  | impl<K : Hash + Eq + Clone, V : Copy> CustomLruCache<K,V> {
[INFO] [stdout]     | --------------------------------------------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 52  |     pub fn new(capacity : usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 69  |     pub fn get(&mut self, key : &K) -> Option<&V> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 85  |     pub fn get_mut(&mut self, key : &K) -> Option<&mut V> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93  |     pub fn insert(&mut self, key : K, value : V) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn remove(&mut self, key : &K) -> Option<V> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     fn move_to_front(&mut self, node_idx : usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     fn remove_node(&mut self, node_idx : usize) -> Option<V> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn evict_tail(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `retrieve_historical_terms` is never used
[INFO] [stdout]   --> src/api/course_finder.rs:16:14
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub async fn retrieve_historical_terms() -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_course_list_by_department` is never used
[INFO] [stdout]   --> src/api/utils.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub async fn get_course_list_by_department(department_name : &str) -> Result<Vec<String>, anyhow::Error> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_type_of` is never used
[INFO] [stdout]   --> src/api/utils.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn print_type_of<T>(_ : &T) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_to_file` is never used
[INFO] [stdout]   --> src/api/utils.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn save_to_file(data: &serde_json::Value, filename: &str) -> Result<PathBuf> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_hashmap_keys` is never used
[INFO] [stdout]   --> src/api/utils.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn print_hashmap_keys(hashmap_input : HashMap<String, String>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `CourseInfoVector` should have a snake case name
[INFO] [stdout]   --> src/api/department.rs:25:13
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let mut CourseInfoVector : Vec<CourseInfo> = Vec::new();        // store results here
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `course_info_vector`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/api/department.rs:313:14
[INFO] [stdout]     |
[INFO] [stdout] 313 |     for (key,value) in department_mapping.into_iter() {
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `closest_course_groupID` should have a snake case name
[INFO] [stdout]   --> src/api/course_finder.rs:66:13
[INFO] [stdout]    |
[INFO] [stdout] 66 |     let mut closest_course_groupID = String::new();        // result will be stored here
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `closest_course_group_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `result_string` is never read
[INFO] [stdout]   --> src/api/course_finder.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |     let mut result_string : String = String::new();
[INFO] [stdout]    |             ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> src/api/utils.rs:35:14
[INFO] [stdout]    |
[INFO] [stdout] 35 |     for (key,value) in hashmap_input.into_iter() {
[INFO] [stdout]    |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_mut` and `remove` are never used
[INFO] [stdout]    --> src/data_structures/custom_lru_cache.rs:85:12
[INFO] [stdout]     |
[INFO] [stdout] 49  | impl<K : Hash + Eq + Clone, V : Copy> CustomLruCache<K,V> {
[INFO] [stdout]     | --------------------------------------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 85  |     pub fn get_mut(&mut self, key : &K) -> Option<&mut V> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn remove(&mut self, key : &K) -> Option<V> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `retrieve_historical_terms` is never used
[INFO] [stdout]   --> src/api/course_finder.rs:16:14
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub async fn retrieve_historical_terms() -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_course_list_by_department` is never used
[INFO] [stdout]   --> src/api/utils.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub async fn get_course_list_by_department(department_name : &str) -> Result<Vec<String>, anyhow::Error> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_type_of` is never used
[INFO] [stdout]   --> src/api/utils.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn print_type_of<T>(_ : &T) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_to_file` is never used
[INFO] [stdout]   --> src/api/utils.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn save_to_file(data: &serde_json::Value, filename: &str) -> Result<PathBuf> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_hashmap_keys` is never used
[INFO] [stdout]   --> src/api/utils.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn print_hashmap_keys(hashmap_input : HashMap<String, String>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `CourseInfoVector` should have a snake case name
[INFO] [stdout]   --> src/api/department.rs:25:13
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let mut CourseInfoVector : Vec<CourseInfo> = Vec::new();        // store results here
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `course_info_vector`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `closest_course_groupID` should have a snake case name
[INFO] [stdout]   --> src/api/course_finder.rs:66:13
[INFO] [stdout]    |
[INFO] [stdout] 66 |     let mut closest_course_groupID = String::new();        // result will be stored here
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `closest_course_group_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io::Write`
[INFO] [stdout]  --> src/main.rs:6:15
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::{fs, io::Write};
[INFO] [stdout]   |               ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ptr::null`
[INFO] [stdout]   --> src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::ptr::null;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `list_of_courses`
[INFO] [stdout]   --> src/bin/experimental.rs:31:13
[INFO] [stdout]    |
[INFO] [stdout] 31 |     let mut list_of_courses = course_instance.get_courses_list().await;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_list_of_courses`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `course_info`
[INFO] [stdout]   --> src/bin/experimental.rs:32:13
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let mut course_info = course_instance.get_course_info().await;
[INFO] [stdout]    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_course_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/experimental.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let mut course_instance = CCNYCourseCatalog::new(String::from("computer science"), Some(String::from("algorithms")));
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/experimental.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |     let mut list_of_courses = course_instance.get_courses_list().await;
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/experimental.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let mut course_info = course_instance.get_course_info().await;
[INFO] [stdout]    |         ----^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `closest_course_groupID`
[INFO] [stdout]   --> src/main.rs:63:13
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let mut closest_course_groupID = String::new();        // result will be stored here
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_closest_course_groupID`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let mut closest_course_groupID = String::new();        // result will be stored here
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 71 |     let mut courses_by_department = fetch_courses_by_department(&closest_department).await.unwrap();
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `course_name_and_code_mapping`
[INFO] [stdout]    --> src/main.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 117 |     let course_name_and_code_mapping : BTreeMap<String, (i32, String)> = BTreeMap::new();     // this is where the mapping logic will be ...
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_course_name_and_code_mapping`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `complete_course_group_id` is never read
[INFO] [stdout]    --> src/main.rs:119:13
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let mut complete_course_group_id : String = String::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `list_of_courses`
[INFO] [stdout]   --> src/bin/experimental.rs:31:13
[INFO] [stdout]    |
[INFO] [stdout] 31 |     let mut list_of_courses = course_instance.get_courses_list().await;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_list_of_courses`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `course_info`
[INFO] [stdout]   --> src/bin/experimental.rs:32:13
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let mut course_info = course_instance.get_course_info().await;
[INFO] [stdout]    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_course_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/experimental.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let mut course_instance = CCNYCourseCatalog::new(String::from("computer science"), Some(String::from("algorithms")));
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/experimental.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |     let mut list_of_courses = course_instance.get_courses_list().await;
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/experimental.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let mut course_info = course_instance.get_course_info().await;
[INFO] [stdout]    |         ----^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `effective_end_date_placeholder`
[INFO] [stdout]    --> src/main.rs:377:17
[INFO] [stdout]     |
[INFO] [stdout] 377 | ...   let effective_end_date_placeholder = serde_json::from_value(course_data["effectiveEndDate"].clone()).unwrap_or("null".to_owned());
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_effective_end_date_placeholder`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:354:25
[INFO] [stdout]     |
[INFO] [stdout] 354 |                     let mut course_component_instance = CourseComponents {
[INFO] [stdout]     |                         ----^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:399:17
[INFO] [stdout]     |
[INFO] [stdout] 399 |             let mut course_info_instance = CourseInfo {
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `curr_dept`
[INFO] [stdout]    --> src/main.rs:450:17
[INFO] [stdout]     |
[INFO] [stdout] 450 |         let mut curr_dept = String::from(department);
[INFO] [stdout]     |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_dept`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:450:13
[INFO] [stdout]     |
[INFO] [stdout] 450 |         let mut curr_dept = String::from(department);
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io::Write`
[INFO] [stdout]  --> src/main.rs:6:15
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::{fs, io::Write};
[INFO] [stdout]   |               ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ptr::null`
[INFO] [stdout]   --> src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::ptr::null;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `closest_course_groupID`
[INFO] [stdout]   --> src/main.rs:63:13
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let mut closest_course_groupID = String::new();        // result will be stored here
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_closest_course_groupID`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let mut closest_course_groupID = String::new();        // result will be stored here
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 71 |     let mut courses_by_department = fetch_courses_by_department(&closest_department).await.unwrap();
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `course_name_and_code_mapping`
[INFO] [stdout]    --> src/main.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 117 |     let course_name_and_code_mapping : BTreeMap<String, (i32, String)> = BTreeMap::new();     // this is where the mapping logic will be ...
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_course_name_and_code_mapping`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `complete_course_group_id` is never read
[INFO] [stdout]    --> src/main.rs:119:13
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let mut complete_course_group_id : String = String::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/main.rs:540:14
[INFO] [stdout]     |
[INFO] [stdout] 540 |     for (key,value) in hashmap_input.into_iter() {
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `effective_end_date_placeholder`
[INFO] [stdout]    --> src/main.rs:377:17
[INFO] [stdout]     |
[INFO] [stdout] 377 | ...   let effective_end_date_placeholder = serde_json::from_value(course_data["effectiveEndDate"].clone()).unwrap_or("null".to_owned());
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_effective_end_date_placeholder`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/main.rs:551:14
[INFO] [stdout]     |
[INFO] [stdout] 551 |     for (key,value) in department_mapping.into_iter() {
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `result_string` is never read
[INFO] [stdout]    --> src/main.rs:572:13
[INFO] [stdout]     |
[INFO] [stdout] 572 |     let mut result_string : String = String::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `closest_course_groupID` should have a snake case name
[INFO] [stdout]   --> src/main.rs:63:13
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let mut closest_course_groupID = String::new();        // result will be stored here
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `closest_course_group_id`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `CourseInfoVector` should have a snake case name
[INFO] [stdout]    --> src/main.rs:310:13
[INFO] [stdout]     |
[INFO] [stdout] 310 |     let mut CourseInfoVector : Vec<CourseInfo> = Vec::new();        // store results here
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `course_info_vector`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:354:25
[INFO] [stdout]     |
[INFO] [stdout] 354 |                     let mut course_component_instance = CourseComponents {
[INFO] [stdout]     |                         ----^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:399:17
[INFO] [stdout]     |
[INFO] [stdout] 399 |             let mut course_info_instance = CourseInfo {
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `curr_dept`
[INFO] [stdout]    --> src/main.rs:450:17
[INFO] [stdout]     |
[INFO] [stdout] 450 |         let mut curr_dept = String::from(department);
[INFO] [stdout]     |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_dept`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:450:13
[INFO] [stdout]     |
[INFO] [stdout] 450 |         let mut curr_dept = String::from(department);
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/main.rs:540:14
[INFO] [stdout]     |
[INFO] [stdout] 540 |     for (key,value) in hashmap_input.into_iter() {
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/main.rs:551:14
[INFO] [stdout]     |
[INFO] [stdout] 551 |     for (key,value) in department_mapping.into_iter() {
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `result_string` is never read
[INFO] [stdout]    --> src/main.rs:572:13
[INFO] [stdout]     |
[INFO] [stdout] 572 |     let mut result_string : String = String::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `closest_course_groupID` should have a snake case name
[INFO] [stdout]   --> src/main.rs:63:13
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let mut closest_course_groupID = String::new();        // result will be stored here
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `closest_course_group_id`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `CourseInfoVector` should have a snake case name
[INFO] [stdout]    --> src/main.rs:310:13
[INFO] [stdout]     |
[INFO] [stdout] 310 |     let mut CourseInfoVector : Vec<CourseInfo> = Vec::new();        // store results here
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `course_info_vector`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 43.61s
[INFO] running `Command { std: "docker" "inspect" "39a3adaf5e6ab91f93feb922c884fcc92e0ed2973f9b972012a541bf0cd74467", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "39a3adaf5e6ab91f93feb922c884fcc92e0ed2973f9b972012a541bf0cd74467", kill_on_drop: false }`
[INFO] [stdout] 39a3adaf5e6ab91f93feb922c884fcc92e0ed2973f9b972012a541bf0cd74467
